package com.example.webdatabinder.controller;

import com.example.webdatabinder.config.MyDateEditor;
import com.example.webdatabinder.config.StringFormatter;
import com.example.webdatabinder.entity.User;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;
import java.util.Date;

@RestController
@RequestMapping("/user")
public class UserController {
    //【控制器内】初始化绑定器
    //绑定一个属性编辑器
    //参数列表是解析后的类型class，要解析的属性field,自定义的PropertyEditor
    //表示当前控制器的所有类型是Date的mydate使用MyDateEditor属性编辑器
    //如果没有"mydate",表示所有Date都使用同一个MyDateEditor属性编辑器
    // 只对当前Controller生效
//    @InitBinder()
    /**
     * 每次请求都会进入
     * @param webDataBinder
     */
    public void bind (WebDataBinder webDataBinder){
        webDataBinder.registerCustomEditor(Date.class,"mydate",new MyDateEditor());
        webDataBinder.registerCustomEditor(Date.class, new MyDateEditor());
        webDataBinder.addCustomFormatter(new StringFormatter());
    }

    //user的mydate属性接收【表单】提交的参数，格式201801--10
    @GetMapping("/date")
    public User find(User user, HttpServletResponse response) throws Exception{
        return user;
    }
}
